/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package escom.ipn.modelo.dao;


import escom.ipn.modelo.dto.UsuarioClass;
import escom.ipn.modelo.dto.tipoUsuarioClass;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;


import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author db2admin
 */
public class adminUsuarioDAO {
    
    public static final String SQL_INSERT =
            "insert into USUARIO(CAT_TIPO_USUARIO_id_tipo,"
                              + "SECTOR_id_sector,"
                              + "CAT_ESTADO_USUARIO_id_estado_usuario,"
                              + "nombre,"
                              + "ap_paterno,"
                              + "ap_materno,"
                              + "direccion, "
                              + "telefono,"
                              + "usuario,"
                              + "password, "
                              + "jornada) "
            + "values(?,?,?,?,?,?,?,?,?,?,?) ";
    
     public static final String SQL_UPDATE =
             "update USUARIO set CAT_TIPO_USUARIO_id_tipo=?,"
                              + "SECTOR_id_sector=?,"
                              + "nombre=?,"
                              + "ap_paterno=?,"
                              + "ap_materno=?,"
                              + "direccion=?, "
                              + "telefono=?,"
                              + "usuario=?,"
                              + "password=?, "
                              + "jornada=?"
                              + " where id=?";

     
    public static final String SQL_SELECT_ALL =
            "select * from usuario";
    
    private static final String SQL_DELETE =
            "delete from USUARIO where id = ?";
    
    public static final String SQL_SELECT =
            "select * from USUARIO where id= ?";
    
    public static final String SQL_TIPO_USUARIO="select nombre from cat_tipo_usuario";
    
    
    
     public void insertUsuario(UsuarioClass a, Connection conn)
            throws SQLException {
        PreparedStatement ps = null;
        try {
            ps = conn.prepareStatement(SQL_INSERT);
            ps.setInt(1, a.getCAT_TIPO_USUARIO_id_tipo_usuario());
            ps.setInt(2, a.getSECTOR_id_sector());
            ps.setInt(3, a.getEstado());
            ps.setString(4, a.getNombre());
            ps.setString(5, a.getAp_paterno());
            ps.setString(6, a.getAp_materno());
            ps.setString(7, a.getDireccion());
            ps.setString(8, a.getTelefono());
            ps.setString(9, a.getUsuario());
            ps.setString(10, a.getPassword());
            ps.setInt(11, a.getJornada());
            ps.executeUpdate();
        } 
        finally {
            cerrar(ps);
            cerrar(conn);
        } 
     }
        public List loadAll(Connection conn)
            throws SQLException {
        PreparedStatement ps = null;
        ResultSet rs = null;
        try {
            ps = conn.prepareStatement(SQL_SELECT_ALL);
            rs = ps.executeQuery();
            List resultados = getResults(rs);
            if (resultados.size() > 0) {
                return resultados;
            } else {
                return null;
            }
        } finally {
            cerrar(rs);
            cerrar(ps);
            cerrar(conn);
        }
    }
    public void updateUsuario(UsuarioClass a, Connection cnn) 
            throws SQLException {
         PreparedStatement ps = null;
        try {
            ps = cnn.prepareStatement(SQL_UPDATE);
            ps.setInt(1, a.getCAT_TIPO_USUARIO_id_tipo_usuario());
            ps.setInt(2, a.getSECTOR_id_sector());
            ps.setString(3, a.getNombre());
            ps.setString(4, a.getAp_paterno());
            ps.setString(5, a.getAp_materno());
            ps.setString(6, a.getDireccion());
            ps.setString(7, a.getTelefono());
            ps.setString(8, a.getUsuario());
            ps.setString(9, a.getPassword());
            ps.setInt(10, a.getJornada());
            ps.setInt(11, a.getId_usuario());
            ps.executeUpdate();
        } finally {
            cerrar(ps);
            cerrar(cnn);
        } 
    }
    public List loadSelect(UsuarioClass a, Connection cnn) 
        throws SQLException {
        PreparedStatement ps = null;
        ResultSet rs = null;
        try {
            ps = cnn.prepareStatement(SQL_SELECT);
            ps.setInt(1, a.getId_usuario());
   
            rs = ps.executeQuery();
            List resultados = getResults(rs);
            if (resultados.size() > 0) {
                return resultados;
            } else {
                return null;
            }
        } finally {
            cerrar(rs);
            cerrar(ps);
            cerrar(cnn);
        }
    }
    
        public void borrarUsuario(UsuarioClass a,Connection conn) 
        throws SQLException {
        PreparedStatement ps = null;
        ResultSet rs = null;
        try {
            ps = conn.prepareStatement(SQL_DELETE);
            ps.setInt(1,a.getId_usuario());
            ps.executeUpdate();
        } finally {
            cerrar(rs);
            cerrar(ps);
            cerrar(conn);
          
        }
   }
    
     
        public List getTipoUsuario(Connection conn) throws SQLException{
        PreparedStatement ps = null;
        ResultSet rs = null;
        try {
        List results = new ArrayList();
        ps = conn.prepareStatement(SQL_TIPO_USUARIO);
        rs=ps.executeQuery();
        while(rs.next()){
            tipoUsuarioClass a =new tipoUsuarioClass();
            a.setNombre(rs.getString(1));
            results.add(a);
        }
        return results;
        } finally {
            cerrar(rs);
            cerrar(ps);
            cerrar(conn);
          
        }
               
        }
        
        
    
    
    
    
    private void cerrar(Connection cnn) {
        if (cnn != null) {
            try {
                cnn.close();
            } catch (SQLException e) {
                //manejo del error
            }
        }
    }

    private void cerrar(PreparedStatement ps) {
        if (ps != null) {
            try {
                ps.close();
            } catch (SQLException e) {
                //manejo del error
            }
        }
    }

    private void cerrar(ResultSet rs) {
        if (rs != null) {
            try {
                rs.close();
            } catch (SQLException e) {
                //manejo del error
            }
        }
    }
    
private List getResults(ResultSet rs)
            throws SQLException {
        List results = new ArrayList();
        while (rs.next()) {
            UsuarioClass a = new UsuarioClass();
            a.setId_usuario(rs.getInt("id"));
            a.setCAT_TIPO_USUARIO_id_tipo_usuario(rs.getInt("CAT_TIPO_USUARIO_id_tipo"));
            a.setSECTOR_id_sector(rs.getInt("SECTOR_id_sector"));
            a.setNombre(rs.getString("nombre"));
            a.setAp_paterno(rs.getString("ap_paterno"));
            a.setAp_materno(rs.getString("ap_materno"));
            a.setDireccion(rs.getString("direccion"));
            a.setTelefono(rs.getString("telefono"));
            a.setUsuario(rs.getString("usuario"));
            a.setPassword(rs.getString("password"));
            a.setJornada(Integer.parseInt(rs.getString("jornada")));
            results.add(a);
        }
        return results;
    }



    

    
    
}
